Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

event: remove ABT_event_XXX() functions #144

Merged
merged 1 commit into from
Feb 24, 2020

Conversation

shintaro-iwasaki
Copy link
Collaborator

@shintaro-iwasaki shintaro-iwasaki commented Feb 18, 2020

This PR removes the ABT_event interface, which seems designed to allows users to make execution streams "do something" periodically but at present supports only predefined functionalities. There are five reasons why I try to remove it:
(1) these features are not actively used (as far as I know),
(2) these features are not tested,
(3) these features are not documented well,
(4) these features make the code complicated, and
(5) they should be implemented on top of Argobots based on the application's needs.

Currently, the following predefined features are implemented:

  1. Power handling (associated with ABT_CONFIG_HANDLE_POWER_EVENT)

When this feature is enabled, Argobots is connected with a homemade power management server.

ret = connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr));

An execution stream periodically polls messages from this server in ABTI_event_check_power() and changes the number of execution streams dynamically.

ABT_bool ABTI_event_check_power(ABTI_local *p_local)

This feature provides an interface to (1) set the server address (ABT_POWER_EVENT_HOSTNAME and ABT_POWER_EVENT_PORT) and (2) add and delete user-defined callbacks on ES creation and destruction (i.e., ABT_event_add_callback(), ABT_event_del_callback()).

  1. Profiling (associated with ABT_CONFIG_PUBLISH_INFO)

When this feature is enabled, Argobots starts profiling; specifically it measures power consumption via RAPL, the numbers of completed ULTs and tasks per ES). One execution stream periodically outputs profiled data in ABTI_event_publish_info().

void ABTI_event_publish_info(ABTI_local *p_local)

The profiling data is output by either fprintf() or BEACON (https://gitlab.encs.vancouver.wsu.edu/xuechen.zhang/storageqos-siren/tree/2208026ea18faecb43ba04442516f1c103982269/src/enclave-comm).

This feature provides an interface to (1) start and stop profiling (ABT_event_prof_start() and ABT_event_prof_stop() ), (2) explicitly publish data (ABT_event_prof_publish()), and (3) configure parameters (e.g., an interval via ABT_PUBLISH_INTERVAL).


Note that this PR does not deny the usefulness of these features. I rather think they are good examples to show how to interact with external components, while priority of making such examples is not high. If requested, I will raise the priority so please let us know.

This removes a user interface that can control event, but the concept of "event" still remains in Argobots. We cannot simply remove it since now scheduler termination relies on "event" processing

Any suggestions are welcome.

Because they have not been maintained for long, this patch removes
ABT_event_XXX() functions from Argobots. They support two features: adaptive ES
creation and reduction for power capping and profiling, both of which are
disabled by default. Removal of them eliminates a lot of possible dependences on
external libraries and cleans up the logic. These features should be implemented
on top of Argobots (e.g., as examples of how Argobots can interact with external
components) in the future.
@shintaro-iwasaki
Copy link
Collaborator Author

test:jenkins/all

@shintaro-iwasaki
Copy link
Collaborator Author

For reference, this PR is related to #17 and #130.

@shintaro-iwasaki
Copy link
Collaborator Author

We merge this PR, but if these removed features are in use or needed, please let us know by opening an issue or sending an email to us.

@shintaro-iwasaki shintaro-iwasaki merged commit 4fa3d44 into pmodels:master Feb 24, 2020
@shintaro-iwasaki shintaro-iwasaki mentioned this pull request Mar 5, 2020
@shintaro-iwasaki shintaro-iwasaki deleted the RemoveEvent branch August 6, 2020 22:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant